package org.dromara.demo.designPattern.srp;

/**
 * 单一职责原则
 * 模拟场景:
 * 这里通过一个视频网站用户分类的例子，来帮助大家理解单一职责原则的
 * 构建方法。当在各类视频网站看电影、电视剧时，网站针对不同的用户类型，
 * 会在用户观看时给出不同的服务反馈，如以下三种：
 * 访客用户，一般只可以观看480P视频，并时刻提醒用户注册会员能观
 * 看高清视普通会员，可以观看720P超清视频，但不能屏蔽视频中出现的广告
 * VIP 会员（属于付费用户），既可以观看 1080P 蓝光视频，又可以关闭或跳过广告
 */
public class VideoUserService {


    /**
     * 违背单一职责原则
     * @param userType : 用户类型
     */
    public void serveGrade(String userType){
        //缺点 : 如果面对频繁迭代的业务需求，这样的代码结构就很难支撑系统迭代，每一次需求的实现都可能会影响其他逻辑，给整个接口服务带来不可控的风险
        if ("VIP用户".equals(userType)){
            System.out.println("VIP用户，视频1080P蓝光");
        } else if ("普通用户".equals(userType)){
            System.out.println("普通用户，视频720P超清");
        } else if ("访客用户".equals(userType)){
            System.out.println("访客用户，视频480P高清");
        }
    }
}
